package com.erp.erp_entitys.bill_declare;

import com.erp.erp_entitys.business.entity.CarryDetailEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 报关主信息表(BillDeclareInfo)实体类
 *
 * @author cj
 * @since 2021-01-10 11:14:02
 */
public class BillDeclareInfo implements Serializable {
    private static final long serialVersionUID = -55358938982565503L;
    /**
     * 报关ID
     */
    private Integer declareId;
    /**
     * 出运明细主id
     */
    private Integer carryId;
    /**
     * 客户编码
     */
    private String custCode;
    /**
     * 客户名称
     */
    private String custName;
    /**
     * 报关发票号码
     */
    private String invoiceNo;
    /**
     * 发票日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date invoiceDate;
    /**
     * 单据类型
     */
    private String billType;
    /**
     * 外销合同编号
     */
    private String contractNo;
    /**
     * 客户合同号
     */
    private String custContractNo;
    /**
     * 发票金额(发票总额)
     */
    private BigDecimal invoicemoney;
    /**
     * 客户联系人（导入对应出运明细后，客户的联系人，出运模块会有，你直接获取）
     */
    private String linker;
    /**
     * 签约公司编码
     */
    private String companyCode;
    /**
     * 签约公司名称（导入出运明细签约公司，可以下拉选择其它公司）
     */
    private String companyName;
    /**
     * 币种编码
     */
    private String moneyCode;
    /**
     * 币种名称
     */
    private String moneyName;
    /**
     * 人民币汇率
     */
    private BigDecimal rmbRate;
    /**
     * 美元汇率
     */
    private BigDecimal usdRate;
    /**
     * 起运地
     */
    private String startplace;
    /**
     * 目的地
     */
    private String endplace;
    /**
     * 运输方式
     */
    private String transMode;
    /**
     * 价格术语
     */
    private String priceTerm;
    /**
     * 收款（结汇）方式
     */
    private String settleMode;
    /**
     * 出运日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date shippingDate;
    /**
     * 银行编码
     */
    private String bankCode;
    /**
     * 银行名称
     */
    private String bankName;
    /**
     * 制单日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    /**
     * 编辑修改时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date editTime;
    /**
     * 操作员编号
     */
    private String opCode;
    /**
     * 操作员名称
     */
    private String opName;
    /**
     * 业务员编码
     */
    private String salesmanCode;
    /**
     * 业务员名称
     */
    private String salesmanName;
    /**
     * 进仓装柜日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date inStockDate;
    /**
     * 报关日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date declarationDate;
    /**
     * 实际开船日期ATD
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date atdDate;
    /**
     * 预计开船日期ETD
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date etdDate;
    /**
     * 预计到达日期ETA
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date etaDate;
    /**
     * 报关单号
     */
    private String billCustmsDeclareNo;
    /**
     * 状态(1.草稿箱 2.待批箱 3.已批箱 4.完成箱 5.垃圾箱)
     */
    private Integer status;
    /**
     * 业务模式
     */
    private String businessMode;
    /**
     * 客户等级
     */
    private String customerLevelName;
    /**
     * 客户等级编码
     */
    private String customerLevelCode;
    /**
     * 报关系数
     */
    private BigDecimal coefficient;
    /**
     * 是否走信保订单(0:否 1:是)
     */
    private Integer whetherCreditGuarantee;

    /**
     * 信保订单金额USD
     */
    private BigDecimal creditGuaranteeAmount;
    public BillDeclareInfo() {
    }
    public BillDeclareInfo(CarryDetailEntity carry) {
        this.carryId=carry.getId();
        this.custCode=carry.getCustomerCode();
        this.custName =carry.getCustomerName();
        this.invoiceNo =carry.getBillNo();
        this.contractNo=carry.getSalesContractNo();
        this.custContractNo=carry.getCustomerContractNo();
        this.invoicemoney=carry.getTotalInvoiceAmount();
        this.companyCode=carry.getSigningCompanyCode();
        this.companyName =carry.getSigningCompanyName();
        this.moneyCode =carry.getCurrencyCode();
        this.moneyName=carry.getCurrency();
        this.rmbRate = carry.getRmbRate();
        this.usdRate = carry.getUsdRate();
        this.startplace =carry.getTransitPlaceName();
        this.endplace = carry.getDestinationName();
        this.transMode = carry.getModeOfTransport();
        this.priceTerm = carry.getPriceTermsName();
        this.settleMode = carry.getPaymentMethodName();
        this.shippingDate = carry.getTime();
        this.bankCode=carry.getBankCode();
        this.bankName = carry.getBankName();
        this.salesmanCode = carry.getSalesmanCode();
        this.salesmanName = carry.getSalesmanName();
        this.inStockDate = carry.getLoadingTime();
        this.atdDate = carry.getActualTimeDismissal();
        this.businessMode = carry.getBusinessModelName();
        this.customerLevelName=carry.getCustomerLevelName();
        this.customerLevelCode=carry.getCustomerLevelCode();
        this.whetherCreditGuarantee=carry.getWhetherCreditGuarantee();
        this.creditGuaranteeAmount=carry.getCreditGuaranteeAmount();
    }

    public Integer getWhetherCreditGuarantee() {
        return whetherCreditGuarantee;
    }

    public void setWhetherCreditGuarantee(Integer whetherCreditGuarantee) {
        this.whetherCreditGuarantee = whetherCreditGuarantee;
    }

    public BigDecimal getCreditGuaranteeAmount() {
        return creditGuaranteeAmount;
    }

    public void setCreditGuaranteeAmount(BigDecimal creditGuaranteeAmount) {
        this.creditGuaranteeAmount = creditGuaranteeAmount;
    }

    public BigDecimal getCoefficient() {
        return coefficient;
    }

    public void setCoefficient(BigDecimal coefficient) {
        this.coefficient = coefficient;
    }

    public String getCustomerLevelName() {
        return customerLevelName;
    }

    public void setCustomerLevelName(String customerLevelName) {
        this.customerLevelName = customerLevelName;
    }

    public String getCustomerLevelCode() {
        return customerLevelCode;
    }

    public void setCustomerLevelCode(String customerLevelCode) {
        this.customerLevelCode = customerLevelCode;
    }

    public Integer getDeclareId() {
        return declareId;
    }

    public void setDeclareId(Integer declareId) {
        this.declareId = declareId;
    }

    public Integer getCarryId() {
        return carryId;
    }

    public void setCarryId(Integer carryId) {
        this.carryId = carryId;
    }

    public String getCustCode() {
        return custCode;
    }

    public void setCustCode(String custCode) {
        this.custCode = custCode;
    }

    public String getCustName() {
        return custName;
    }

    public void setCustName(String custName) {
        this.custName = custName;
    }

    public String getInvoiceNo() {
        return invoiceNo;
    }

    public void setInvoiceNo(String invoiceNo) {
        this.invoiceNo = invoiceNo;
    }

    public Date getInvoiceDate() {
        return invoiceDate;
    }

    public void setInvoiceDate(Date invoiceDate) {
        this.invoiceDate = invoiceDate;
    }

    public String getBillType() {
        return billType;
    }

    public void setBillType(String billType) {
        this.billType = billType;
    }

    public String getContractNo() {
        return contractNo;
    }

    public void setContractNo(String contractNo) {
        this.contractNo = contractNo;
    }

    public String getCustContractNo() {
        return custContractNo;
    }

    public void setCustContractNo(String custContractNo) {
        this.custContractNo = custContractNo;
    }

    public BigDecimal getInvoicemoney() {
        return invoicemoney;
    }

    public void setInvoicemoney(BigDecimal invoicemoney) {
        this.invoicemoney = invoicemoney;
    }

    public String getLinker() {
        return linker;
    }

    public void setLinker(String linker) {
        this.linker = linker;
    }

    public String getCompanyCode() {
        return companyCode;
    }

    public void setCompanyCode(String companyCode) {
        this.companyCode = companyCode;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getMoneyCode() {
        return moneyCode;
    }

    public void setMoneyCode(String moneyCode) {
        this.moneyCode = moneyCode;
    }

    public String getMoneyName() {
        return moneyName;
    }

    public void setMoneyName(String moneyName) {
        this.moneyName = moneyName;
    }

    public BigDecimal getRmbRate() {
        return rmbRate;
    }

    public void setRmbRate(BigDecimal rmbRate) {
        this.rmbRate = rmbRate;
    }

    public BigDecimal getUsdRate() {
        return usdRate;
    }

    public void setUsdRate(BigDecimal usdRate) {
        this.usdRate = usdRate;
    }

    public String getStartplace() {
        return startplace;
    }

    public void setStartplace(String startplace) {
        this.startplace = startplace;
    }

    public String getEndplace() {
        return endplace;
    }

    public void setEndplace(String endplace) {
        this.endplace = endplace;
    }

    public String getTransMode() {
        return transMode;
    }

    public void setTransMode(String transMode) {
        this.transMode = transMode;
    }

    public String getPriceTerm() {
        return priceTerm;
    }

    public void setPriceTerm(String priceTerm) {
        this.priceTerm = priceTerm;
    }

    public String getSettleMode() {
        return settleMode;
    }

    public void setSettleMode(String settleMode) {
        this.settleMode = settleMode;
    }

    public Date getShippingDate() {
        return shippingDate;
    }

    public void setShippingDate(Date shippingDate) {
        this.shippingDate = shippingDate;
    }

    public String getBankCode() {
        return bankCode;
    }

    public void setBankCode(String bankCode) {
        this.bankCode = bankCode;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getEditTime() {
        return editTime;
    }

    public void setEditTime(Date editTime) {
        this.editTime = editTime;
    }

    public String getOpCode() {
        return opCode;
    }

    public void setOpCode(String opCode) {
        this.opCode = opCode;
    }

    public String getOpName() {
        return opName;
    }

    public void setOpName(String opName) {
        this.opName = opName;
    }

    public String getSalesmanCode() {
        return salesmanCode;
    }

    public void setSalesmanCode(String salesmanCode) {
        this.salesmanCode = salesmanCode;
    }

    public String getSalesmanName() {
        return salesmanName;
    }

    public void setSalesmanName(String salesmanName) {
        this.salesmanName = salesmanName;
    }

    public Date getInStockDate() {
        return inStockDate;
    }

    public void setInStockDate(Date inStockDate) {
        this.inStockDate = inStockDate;
    }

    public Date getDeclarationDate() {
        return declarationDate;
    }

    public void setDeclarationDate(Date declarationDate) {
        this.declarationDate = declarationDate;
    }

    public Date getAtdDate() {
        return atdDate;
    }

    public void setAtdDate(Date atdDate) {
        this.atdDate = atdDate;
    }

    public Date getEtdDate() {
        return etdDate;
    }

    public void setEtdDate(Date etdDate) {
        this.etdDate = etdDate;
    }

    public Date getEtaDate() {
        return etaDate;
    }

    public void setEtaDate(Date etaDate) {
        this.etaDate = etaDate;
    }

    public String getBillCustmsDeclareNo() {
        return billCustmsDeclareNo;
    }

    public void setBillCustmsDeclareNo(String billCustmsDeclareNo) {
        this.billCustmsDeclareNo = billCustmsDeclareNo;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getBusinessMode() {
        return businessMode;
    }

    public void setBusinessMode(String businessMode) {
        this.businessMode = businessMode;
    }

}